﻿using System;
using System.Collections.Generic;
using GSQ.BusinessEntities;
using GSQ.DataAccess;

namespace GSQ.BusinessLogic
{
    public class ProductosBL
    {
        public void Insert(PRODUCTOS value)
        {
            if (value.IsValid())
            {
                new ProductosDA().Insert(value);
            }
            else
                throw new ArgumentException("La entidad no esta valida");
        }

        public void Update(PRODUCTOS newValue, PRODUCTOS oldValue)
        {
            if (newValue.IsValid())
            {
                new ProductosDA().Update(newValue);
            }
            else
                throw new ArgumentException("La entidad no esta valida");
        }

        public List<PRODUCTOS> GetAll()
        {
            return new ProductosDA().GetAll();
        }

        public PRODUCTOS GetById(decimal id)
        {
            return new ProductosDA().GetById(id); 
        }

        public PRODUCTOS GetByCodigo(string value)
        {
            return new ProductosDA().GetByCodigo(value);
        }

        public List<PRODUCTOS> GetByCodigoTodos(string value)
        {
            return new ProductosDA().GetByCodigoTodos(value);
        }

        public List<PRODUCTOS> GetByIdOriginal(decimal value)
        {
            return new ProductosDA().GetByIdOriginal(value);
        }

        public List<PRODUCTOS> GetByNroOriginal(string value)
        {
            return new ProductosDA().GetByNroOriginal(value);
        }

        public List<PRODUCTOS> GetByDescripcion(decimal value)
        {
            return new ProductosDA().GetByIdDescripcion(value);
        }

        public List<PRODUCTOS> GetByDescripcion(string value)
        {
            return new ProductosDA().GetByDescripcion(value);
        }

        public List<PRODUCTOS> GetByCategoria(decimal value)
        {
            return new ProductosDA().GetByIdCategoria(value);
        }

        public List<PRODUCTOS> GetByCategoria(string value)
        {
            return new ProductosDA().GetByCategoria(value);
        }

        public List<PRODUCTOS> GetByMarca(decimal value)
        {
            return new ProductosDA().GetByIdMarca(value);
        }

        public List<PRODUCTOS> GetByMarca(string value)
        {
            return new ProductosDA().GetByMarca(value);
        }

        public List<PRODUCTOS> GetByDepartamento(string value)
        {
            return new ProductosDA().GetByDepartamento(value);
        }

        public List<PRODUCTOS> GetByDepartamento(decimal value)
        {
            return new ProductosDA().GetByIdDepartamento(value);
        }

        public Tuple<List<PRODUCTOS>, List<ORIGINALES_ADICIONALES>> GetByStartWord(string value)
        {
            return new ProductosDA().GetByStartWord(value);
        }

        public List<PRODUCTOS_MOVIMIENTOS> GetByFechasCodigo(DateTime fecha1, DateTime fecha2, string value)
        {
            return new ProductosDA().GetByFechasCodigo(fecha1.Date, fecha2.Date, value.ToString());
        }
    }
}
